//@author A0087294-reused
#ifndef __OutputLevelSwitchDisabled_h__
#define __OutputLevelSwitchDisabled_h__

#include "LoggerLevel.h"

namespace logging {

    /*! \brief The dynamic treatment of logging levels is switched off if this
     *         class is a base class of the output-type of the logging framework
     */
    template < typename Base >
    class OutputLevelSwitchDisabled : public Base {
        public:
            /*! \brief Matches only on correct type and used for switching
             *         %levels. However, here the implementation is empty
             *         due to the fact, that level switching is disabled
             *         by this class
             */
            OutputLevelSwitchDisabled& operator<<(const ::logging::Level::levels&) {
                return *this;
            }

            /*! \brief The operator matches on every type, and delegates further
             *         work to the base class.
             */
            template< typename T>
            OutputLevelSwitchDisabled& operator<<(T t) {
                Base::operator<<(t);
                return *this;
            }
    };

} /* logging */

#endif